package collection;

import java.util.LinkedList;
import java.util.Queue;

/**
 * java.util.Queue接口:队列
 * Queue继承自Collection,所以队列也是一种集合.队列可以保存一组元素,但是存取元素必须循环
 * 先进先出原则.FIFO:First Input First OutPut
 * <p>
 * 队列常见实现类:java.util.linkedList
 */
public class QueueDemo {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        /*
        offer方法时入队操作,将元素添加到队列的末尾
         */
        queue.offer("one");
        queue.offer("two");
        queue.offer("three");
        queue.offer("four");
        queue.offer("five");
        System.out.println(queue);

        /*
        poll:出队操作,获取队首元素后该元素从队列中被删除
         */
        String str = queue.poll();
        System.out.println(str);
        System.out.println(queue);
        /*
        peek:引用队首元素,不做出队操作
         */
        str = queue.peek();
        System.out.println(str);
        System.out.println(queue);
        /*
        队列继承自集合,集合的方法依然可用
         */
        int size = queue.size();
        System.out.println("size:" + size);
        /*
        新循环(迭代器)遍历队列后,该队列元素还在队列中
         */
        for (String s:queue){
            System.out.println(s);
        }
        System.out.println(queue);
//一次性的
        while (queue.size() > 0) {
            str = queue.poll();
            System.out.println(str);
        }
        System.out.println(queue);
    }
}
